home *** CD-ROM | disk | FTP | other *** search
/ Acorn User: China / Acorn User China CD-ROM (UK) (Disc B) / Acorn User China CD-ROM (UK) (Disc B).bin / STUTTGART / FROMUTS / UNIXLIB37B / clib_h_dirent < prev    next >
Encoding:
Text File  |  1991-09-23  |  1.7 KB  |  68 lines

  1. /* dirent.h (c) Copyright 1991 H.Rogers */
  2.  
  3. #ifndef __DIRENT_H
  4. #define __DIRENT_H
  5.  
  6. #ifndef __SYS_PARAM_H
  7. #include "sys/param.h"
  8. #endif
  9.  
  10. #ifndef __SYS_TYPES_H
  11. #include "sys/types.h"
  12. #endif
  13.  
  14. #define MAXNAMLEN    MAXPATHLEN    /* don't assume ADFS braindamage */
  15.  
  16. /* This isn't really how ADFS stores files in a directory, but
  17.  * since no I/O is permitted on directories anyway this doesn't
  18.  * really matter. */
  19.  
  20. #define d_ino    d_fileno        /* compatibility */
  21.  
  22. struct    direct
  23.   {
  24.   off_t     d_off;        /* offset of next disk directory entry */
  25.   ino_t     d_fileno;        /* file number of entry */
  26.   size_t    d_reclen;        /* length of this record */
  27.   size_t    d_namlen;        /* length of d_name */
  28.   char        d_name[MAXNAMLEN];    /* name */
  29.   };
  30.  
  31. #define DIRSIZ(dp) (((sizeof(struct direct) - \
  32.     MAXNAMLEN + ((dp)->d_namlen + 1)) + \
  33.     (sizeof(int) - 1)) & ~(sizeof(int) - 1))
  34.  
  35. typedef struct
  36.   {
  37.   int        dd_fd;        /* file descriptor (unused) */
  38.   char        *dd_name;    /* directory name */
  39.   size_t    dd_loc;     /* buffer offset */
  40.   size_t    dd_size;    /* amount of valid data in buffer */
  41.   size_t    dd_bsize;    /* buffer size */
  42.   size_t    dd_off;     /* directory offset */
  43.   int        dd_off2;    /* offset of next read */
  44.   char        *dd_buf;    /* directory data buffer */
  45.   } __DIR;
  46.  
  47. #define DIR __DIR
  48.  
  49. #ifdef __STDC__
  50. extern    DIR        *opendir(char *);
  51. extern    struct direct    *readdir(DIR *);
  52. extern    long        telldir(DIR *);
  53. extern    void        seekdir(DIR *,long);
  54. #define rewinddir(d)    (seekdir((d),(long)0),0)
  55. extern    void        (rewinddir)(DIR *);
  56. extern    int        closedir(DIR *);
  57. #else
  58. extern    DIR        *opendir();
  59. extern    struct direct    *readdir();
  60. extern    long        telldir();
  61. extern    void        seekdir();
  62. #define rewinddir(d)    seekdir((d),(long)0)
  63. extern    void        (rewinddir)();
  64. extern    int        closedir();
  65. #endif
  66.  
  67. #endif
  68.